/**
 * 路由信息，自定义全局异常处理
 */

const express = require('express');
const boom = require('boom'); // 引入boom模块，处理程序异常状态
const commonRouter = require('./common'); // 引入common路由模块
const exampleRouter = require('./example'); // 引入example路由模块


const { jwtAuth, decode } = require('../utils/user-jwt'); // 引入jwt认证函数
const router = express.Router(); // 注册路由

router.use(jwtAuth); // 注入认证模块

// 接口示例
router.get('/info', require('./info'));
// 注入路由模块
router.use('/common', commonRouter); // 注入通用路由模块
router.use('/example', exampleRouter); // 注入示例路由模块

// 自定义统一异常处理中间件，需要放在代码最后
router.use((err, req, res, next) => {
    // 自定义用户认证失败的错误返回
    console.log('err===', err);
    if (err && err.name === 'UnauthorizedError') {
        const {status = 401} = err;
        // 抛出401异常
        res.status(status).json({
            success: false,
            message: 'token失效，请重新登录'
        })
    } else {
        const {output} = err || {};
        // 错误码和错误信息
        const errCode = (output && output.statusCode) || 500;
        const errMsg = (output && output.payload && output.payload.error) || err.message;
        res.status(errCode).json({
            success: false,
            message: errMsg
        })
    }
})

module.exports = router;
